package Day12_String类;

/*java访问变量使用就近原则,先找方法中,方法中找不到才会找成员变量.

    this 用来区分 局部变量 和 成员变量
          this.变量名  代表成员变量

    this:方法中的this就是测试类里的调用者(p.setName) p1 p2 p3.....(地址一样)
*/
public class 封装_this {
    public static void main(String[] args) {
        person1 p = new person1();
        p.setName("张研");
        //p.age = -18; //非法的数据,不安全
        p.setAge(18);

        p.eat();
    }
}

class person1 {
    //将成员变量私有
    private String name;
    private int age;

    //获取变量(姓名)的方法 get
    public String getName() {

        return name;
    }

    //修改变量(姓名)的方法 set
    //访问变量使用就近原则,先找方法中,方法中找不到才会找成员变量
    public void setName(String name) {

        this.name = name; //this.变量名: 代表成员变量,后面的name是方法中定义的 局部变量
    }

    //获取变量(年龄)的方法 get
    public int getAge() {

        return age;
    }

    //修改变量(年龄)的方法 set
    //访问变量使用就近原则,先找方法中,方法中找不到才会找成员变量
    public void setAge(int age) {
        if (age < 0) {
            System.out.println("非法年龄");
        } else {
            this.age = age; //this.变量名: 代表成员变量,后面的age是方法中定义的 局部变量
        }
    }

    //-------------------------------------------------------------------------------------------
    public void eat() {

        System.out.println(name + "," + age + "在吃饭");
    }
}
